﻿using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;

namespace SHS
{
    /// <summary>
    /// Správce SHS systému a odkládacích adresářů.
    /// </summary>
    public static class HelpMgr
    {
        private static string _CacheDir;

        /// <summary>
        /// Nastaví nebo vrátí relativní cestu nebo název odkládací složky
        /// </summary>
        /// <value>Název nebo relativní cesta k odkládací složce (např.: "MujProgram/cache" nebo "cache")</value>
        public static string CacheDir
        {
            get
            {
                return _CacheDir;
            }
            set
            {
                _CacheDir = value;
            }
        }

        public static string InstallDir
        {
            get
            {
                return GetInstallDir();
            }
        }

        /// <summary>
        /// Vrátí absolutní cestu k aktuálnímu odkládacímu adresáři.
        /// </summary>
        /// <returns>Plná absolutní cesta k aktuálnímu odkládacímu adresáři (např. : "C:/Users/Administrator/AppData/SHS/cache").</returns>
        public static string GetFullCacheDir()
        {
            throw new System.NotImplementedException();
        }

        /// <summary>
        /// Pročistí aktuální odkládací adresář.
        /// </summary>
        public static void ClearCache()
        {
            throw new System.NotImplementedException();
        }


        /// <summary>
        /// Vytvoří odkládací složku
        /// </summary>
        /// <param name="CacheDir">Relativní název složky. (např.: "MyProgram/cache", "cache").</param>
        /// <returns>
        /// Vrátí stav o vytvoření složky.
        /// True = vytvořena; False = nevytvořena;
        /// </returns>
        public static string CreateCache(string CacheDir)
        {
            throw new System.NotImplementedException();
        }

        private static string GetInstallDir()
        {
            string Instalace;
            RegistryKey klic;
            klic = Registry.LocalMachine.CreateSubKey(@"Software\SHS");
            Instalace = klic.GetValue("InstallDir", "Not Installed").ToString();
            if (Instalace.Equals("Not Installed"))
            {
                throw new Exception("SimpleHelpSystem není nainstalován, nebo není řádně zaregistrován v systémových registrech!");
            }
            return Instalace;
        }

        /// <summary>
        /// Ověří instalaci SHS a vrátí její stav.
        /// </summary>
        /// <returns>Stav instalace SHS. True = instalován; False = Neinstalován;</returns>
        public static bool Verify()
        {
            try
            {
                GetInstallDir();
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}
